Data presentation methods and apparatus to facilitate printing and reviewing

ABSTRACT

A method of creating a printable representation of data elements as displayed in a browser, including a set of frames. The method includes determining an optimal height distance X of each frame of the set of frames, wherein the frame can be printed without a page break. The method further includes retrieving from a data source a first set of data rows, from a row 1 to a row N, wherein each row further comprises a set of data elements; determining a row height for each row of the first set of data rows, based in part, on a set of device display configuration indicia; and determining a row M from the first set of data rows, wherein a summation of the row height of the row 1 to the row M is smaller than X, and a summation of the row height of the row 1 to a row M+1 is larger than X. The method also includes discarding from the row M+1 to the row N; rendering the row 1 to the row M in the browser frame; and, if necessary, retrieving a second set of data rows beginning with the row M+1.

This application claims the benefit under 35 USC 119(e) of U.S.Provisional Application No. 60/410,989, filed Sep. 16, 2002, entitled“Business Intelligent System” by inventors Powers and Gardner, and under35 USC 120 of a commonly assigned U.S. patent application Ser. No.10/237,559, filed Sep. 6, 2002 entitled “ENTERPRISE LINK FOR A SOFTWAREDATABASE,” by inventors Powers and Gardner, both of which areincorporated by reference.

BACKGROUND OF THE INVENTION

The present invention relates in general to enterprise informationsystems. More particularly, the present invention relates to methods andapparatus for optimizing the delivery of data to a device.

Timely intelligence is critical to proper business decision making.Collecting and quickly analyzing information, however, is oftendifficult. In a dynamic marketplace, delayed delivery of intelligencecan reduce both its reliability and relevancy. Substantial delays caneven make the information, often acquired at considerable cost,completely worthless.

Intelligence is often extracted from OLTP applications and fromspecialized databases, called operational data stores. OLTP (onlinetransaction processing) applications are those enterprise systems thatmanage a company's basic transactions, such as order entry and billingsystems. Since they are commonly optimized for reading and writing, andnot for querying, extracting information from an OLTP application can besufficiently complex to require additional user training. Furthermore,while operational data stores generally archive OLTP information in aformat for querying, they also generally do not maintain importanthistorical information. For instance, an operational data store maystore a current checking account balance, but not the individual dailybalances over the previous month.

In addition, the queries themselves often take substantial time toexecute, producing only static snapshots of the information. Observingthe dynamic aspect of changing information is therefore difficult. Apossible solution may be to sequentially execute and aggregate a seriesof queries. However, this solution can be both inefficient andineffective, since manual manipulation still often delays theinformation delivery. That is, these queries must be first manuallyaggregated and summarized, before intelligence reports can be generatedand delivered.

ETL (extraction, transformation, and loading) systems help byextracting, transforming, and aggregating the information. But latencyinherently found in most distributed networks, coupled with considerablemanual intervention that ETL systems often require, mean that criticalinformation can still be received late.

Automatic notification is a possible solution. Many analytical productssuch as business intelligence (BI) and online analytical processing(OLAP) systems are capable of monitoring, scheduling, and broadcastingalerts via email or pager. These systems, however, cannot generallyassure that the intended recipient promptly receives and reads themessage. This presents a significant problem for time-sensitiveinformation, where minutes or even seconds can make a difference.

To facilitate discussion, FIG. 1 shows a simplified functional diagramof distributed information architecture. The diagram can be divided intoan enterprise data layer 160 and a client layer 162. Enterprise datalayer 160 comprises elements that are primarily focused on accumulating,processing, and transforming operational data. Client layer 162comprises elements that are primarily focused on rendering the processeddata for a user.

OLTP (online transaction processing) applications 152 are commonlycoupled to each other, as well as to other enterprise applications,through a dedicated messaging and queuing application (MQ), such asIBM's MQSeries. MQ provides an efficient communication channel for theseapplications, by storing and forwarding data messages, in a manner thatis similar to email.

Commonly coupled to each OLTP application 152 is operational data store154, such as an Oracle database. Through an API (application programminginterface), transactional data can be transferred between the OLTPapplication and the database. Operational data store 154 consolidatesthat data from multiple sources and provides a near real-time,integrated view of volatile, current data. Since its purpose is toprovide integrated data for operational purposes, operational data store154 primarily has add, change, and delete functionality.

In order to conduct meaningful analysis, this information is oftenfurther placed in a more stable environment, optimized for randomquerying. ETL system 155 extracts the information from the appropriatedata store 154, transforms and combines the data based on pre-definedconstraints, and subsequently loads the data into data warehouse 156. Apopular ETL technique, developed by Sagent, is the use of data flows.

Data flows are a series of rule-enabled transformations that areconnected in data pipelines. They handle the tasks of joining, merging,comparing and splitting data and permit the separation of data intodifferent logic paths, each of which can be further combined and splitoff to create more complex transformation sequences.

ETL data extractions often occur by either a bulk or a trickle method.In the bulk method, periodic snap shots of data in operational datastore 154 are extracted and uploaded into data warehouse 156. Thiscommonly occurs as a large batch file scheduled during a low systemutilization period. In the trickle method, changes in operational datastore 154 are continuously uploaded, or “trickled” into data warehouse156. These updates are therefore frequent, smaller, and more currentthan in the bulk method. As in the case of OLTP 152 systems, ETL 155 canalso use the MQ for data extraction.

Once the data is in data warehouse 156, it is available for OLAP 158(online analytical processing). OLAP enables trained users to perform adhoc analysis of data in multiple dimensions, such as with an OLAP cube.OLAP cubes provide multi-dimensional views of data, querying, andanalytical capabilities. Furthermore, many OLAP products can schedule,run, publish, and broadcast reports, alerts and responses over thenetwork, email, or personal digital assistant. Users often access OLAP158 by thin client 162. Thin clients are applications that generally areintegrated into the underlying client device, and generally requireminimal modification. For instance, a thin client can be browser with aMacromedia Flash module installed.

Although OLAP analysis can provide valuable insight about businessoperations, critical information is often received late, even withautomated reporting. Automated OLAP reporting often only has access tothe information within data warehouse 156, which can be severalprocessing stages behind OLTP 152. This delay can be substantial,reducing the information's value. Furthermore, these reports are oftenonly static snapshots of information in data warehouse 156.

For example, a NASDAQ broker places an order into an OLTP 152application called an electronic communications network, or ECN. The ECNmatches customer buy and sell orders directly through the computer. Inthis case, an order to buy 100 shares of ABC at $18.75 was entered. Thisopen order is stored in the ECN operational data store 154, subsequentlyextracted by ETL 155, and analyzed by OLAP 158. If the buy order amountis the then highest in the ECN, OLAP 158 forwards the information tothin client 164, NASDAQ quote montage, where it is immediately displayedon the familiar stock market ticker tape. And although this systemdelivers stock information to individual brokers with reasonably smalllatency, it is also not easily modified. The NASDAQ application iscustom designed for the specific purpose of enabling stock trading. Assuch, it would be difficult to display additional data on the stockticker, such as non-financial information, without substantialadditional programming.

In view of the foregoing, there is desired a method and apparatus foroptimizing the delivery of data to a device, in which relevantinformation is received in a timely manner, and in which that data isrendered in a dynamic format.

SUMMARY OF THE INVENTION

The invention relates, in one embodiment, to a method of creating aprintable representation of data elements as displayed in a browser,including a set of frames. The method includes determining an optimalheight distance X of each frame of the set of frames, wherein the framecan be printed without a page break. The method further includesretrieving from a data source a first set of data rows, from a row 1 toa row N, wherein each row further comprises a set of data elements;determining a row height for each row of the first set of data rows,based in part, on a set of device display configuration indicia; anddetermining a row M from the first set of data rows, wherein a summationof the row height of the row 1 to the row M is smaller than X, and asummation of the row height of the row 1 to a row M +1 is larger than X.The method also includes discarding from the row M +1 to the row N;rendering the row 1 to the row M in the browser frame; and, ifnecessary, retrieving a second set of data rows beginning with the row M+1.

In another embodiment, the invention relates to an apparatus forcreating a printable representation of data elements as displayed in abrowser, including a set of frames. The apparatus includes a means ofdetermining an optimal height distance X of each frame of the set offrames, wherein the frame can be printed without a page break. Theapparatus further includes a means of retrieving from a data source afirst set of data rows, from a row 1 to a row N, wherein each rowfurther comprises a set of data elements; a means of determining a rowheight for each row of the first set of data rows, based in part, on aset of device display configuration indicia; and a means of determininga row M from the first set of data rows, wherein a summation of the rowheight of the row 1 to the row M is smaller than X, and a summation ofthe row height of the row 1 to a row M+1 is larger than X. The apparatusalso includes a means of discarding from the row M +1 to the row N; ameans of rendering the row 1 to the row M in the browser frame; and, ifnecessary, a means of retrieving a second set of data rows beginningwith the row M+1.

These and other features of the present invention will be described inmore detail below in the detailed description of the invention and inconjunction with the following figures.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings and in whichlike reference numerals refer to similar elements and in which:

FIG. 1 illustrates a simplified functional diagram of distributedinformation architecture;

FIGS. 2A-B illustrate, in accordance with one embodiment of the presentinvention, simplified functional diagrams of the active data platform;

FIG. 3A illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying the active studioapplication;

FIGS. 3B-E illustrate, in accordance with one embodiment of the presentinvention, several simplified de-normalized tables as would be used inan active data cache;

FIG. 4 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying an event engine;

FIG. 5 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying components of therich client and active data cache;

FIG. 6 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying components of themessage center;

FIGS. 7A-E illustrate, in accordance with one embodiment of the presentinvention, exemplary screen displays;

FIGS. 8A-B illustrate, in accordance with one embodiment of the presentinvention, an active collaboration server advantageously employed toallow impromptu graphical collaboration between IM users;

FIGS. 9A-B illustrate, in accordance with one embodiment of the presentinvention, simplified functional diagrams of a rules-based monitoringengine with alert capability;

FIGS. 10A-C illustrate, in accordance with one embodiment of the presentinvention, simplified pseudo-code as would be used by IM client;

FIG. 11 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram of the active data platformwith elements of the notification and escalation process;

FIG. 12 illustrates, in accordance with one embodiment of the presentinvention, a simplified diagram of a common instant messaging clientdisplaying a notification message;

FIG. 13 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram of an active data platform inwhich distributed rule evaluation is implemented;

FIG. 14 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying elements of theactive data platform;

FIG. 15A illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram showing a sequencetransactions for maintaining application execution over an intermittentnetwork connection;

FIG. 15B illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram showing a sequencetransactions in which a connection is reestablished in intermittentnetwork connection;

FIG. 15C illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram showing a sequencetransactions in which a chunk in report cache is cleared;

FIGS. 16A-B illustrate, in accordance with one embodiment of the presentinvention, an active studio screen display showing a continuous columnarreport;

FIG. 16C illustrates, in accordance with one embodiment of the presentinvention, a flow chart showing steps for rendering the print boundarieson the active report;

FIGS. 17A-C illustrate, in accordance with one embodiment of the presentinvention, an active studio screen display in which a titled report isbeing rendered;

FIG. 17D illustrates, in accordance with one embodiment of the presentinvention, a flow chart showing steps for printing the section of thelist within the print boundaries;

FIGS. 18A-B illustrate, in accordance with one embodiment of the presentinvention, an active studio screen display in which a titled report isbeing rendered; and,

FIG. 19 illustrates, in accordance with one embodiment of the presentinvention, an active studio screen display further showing thepersonalize tab.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention will now be described in detail with reference toa few preferred embodiments thereof as illustrated in the accompanyingdrawings. In the following description, numerous specific details areset forth in order to provide a thorough understanding of the presentinvention. It will be apparent, however, to one skilled in the art, thatthe present invention may be practiced without some or all of thesespecific details. In other instances, well known process steps and/orstructures have not been described in detail in order to notunnecessarily obscure the present invention. The features and advantagesof the present invention may be better understood with reference to thedrawings and discussions that follow.

In accordance with one embodiment of the present invention, an activedata architecture is advantageously employed to facilitate thepresence-aware delivery of timely data. That is, determining the type ofdevice available to the user, and delivering the information in a formatwithin the device's capabilities. In accordance with another embodimentof the present invention, information can be continuously extracted fromdata sources without the need for manual queries, or additional usertraining. In accordance with another embodiment of the presentinvention, information may be dynamically delivered in order to renderstreaming real-time or near real-time data and/or analytical results,whether graphically, textually, audibly, or otherwise.

Referring now to FIG. 2A, a simplified functional diagram of an activedata platform is illustrated. Active data platform 210 comprises a suiteof applications that allow a user to actively monitor continuouslychanging information, throughout enterprise data layer 140, according toa pre-defined set of rules. A rule may be a pre-defined procedurecomprising the events to be monitored, and the subsequent action ortransformation that may be required. These rules enable active dataplatform 210 to extract, combine, and transform data from varioussystems, as well as the MQ messages transferred among the applications,in a substantially contemporaneous manner. This processed informationcan then be transmitted in substantially near real-time to devices inclient layer 142. For example, processed information can arrive at aclient layer 142 device within 2-10 seconds of an event or transaction,or even sooner. Depending on the type of client device, this processedinformation can be received as a continuous data stream, a staticreport, or an alert. The processed information can also be stored in adata warehouse and compared with future information.

As in FIG. 1, OLTP 102 generates transactional information. Operationaldata store 104 consolidates that data from multiple sources and providesa near real-time, integrated continuously updated view of data. ETLsystem 105 extracts the information from the appropriate data store 104,transforms and combines the data based on pre-defined constraints, andsubsequently loads the data into data warehouse 106 that is optimizedfor querying, or random data retrieval. The ETL extraction can occur ineither a bulk or a trickle method. Once the data is in data warehouse106, it is available for OLAP 108, or online analytical processingapplications. OLAP enables trained users to perform ad hoc analysis ofdata in multiple dimensions, such as with an OLAP cube.

Through the use of browser technology, such as DHTML, thin client 114and a rich client 282 provide the user with enhanced visualizationfunctionality, such as the capability to graphically render streamingdata. Thin client 114, in one embodiment, is called active viewer, andcomprises a browser. Rich client 282, in another embodiment, is calledactive viewer pro, and comprises a browser with additionally installedsoftware. DHTML is a combination of HTML, style sheets, and scripts, andallows web-pages to be animated. In addition, rich client 282 furtherallows for enhanced functionality, such as pen-based user input, secureinstant messaging, robust printing capability, and the use of skins.Skins are configuration files that allow modification of the browserappearance. Messaging client 115, such as a SMS cell phone, or aninstant messaging program, such as Yahoo Messenger or Windows Messenger,provides alert capability. These alerts, as well as static reports, canalso be received through thin client 114, such as a browser. Other 280represents those enterprise applications that have been programmaticallycoupled to active data platform 210, as a client.

In one embodiment, client applications in client layer 142 can reside ona Tablet PC. The Tablet PC represents the evolution of the businessnotebook personal computer. It marks a new direction for notebook PCs,adding pen-based technologies to existing notebook functionality andenabling Windows XP-compatible applications to take advantage of variousinput modes, such as pen and voice-based data. The Table PC will beamong the most versatile PCs ever made, with high-powered and efficientprocessors, lightweight designs, and, for man, built-in wirelesscapability. All Tablet PCs will have keyboards, some permanentlyattached and others detachable. But the Tablet PC is more than just agreat notebook. The real value of the Table PC is that it makes itpossible for information workers to bring he power of their business PCinto more places than ever before, and they can do it with the samesoftware they use on their office PC or notebook today.

For example, betting transactions would be normally stored in a casino'sgame transaction system. Wanting to be extra-attentive to high-rollers,a casino would configure the active data platform to observe for anycustomer whose betting exceeds a specified threshold, upon which analert would be sent to the closest pit boss. The pit boss would locatethese customers and personally oversee that exceptional customer servicewas provided.

FIG. 2B illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying elements of theactive data platform 210, shown in FIG. 2A. Enterprise links 254comprises adaptors that allow active data cache 256 to be coupled to theapplications in enterprise data layer 140. Furthermore, these adaptorscan also selectively filter and transform incoming data for active datacache 256. For instance, adaptors in enterprise link 254 can allowactive data cache 256 to connect to enterprise applications (i.e., SAP,Siebel, and PeopleSoft), databases (i.e., Oracle, Informix, Sybase, DB2,and SQL Server), legacy applications (i.e., IBM S/390 mainframes), OLTP(i.e. order entry, billing, payment, etc), and MQ applications (i.e.,IBM MQSeries, Vitria, Tibco, etc.).

Active data cache 256 is the core repository for the active dataplatform. Unlike traditional databases, such as operational data store104 and data warehouse 106, active data cache 256 stores data in ade-normalized format. Normalization is the practice of optimizing thedatabase structure into multiple tables, eliminating data redundancy andimproving scalability and maintainability.

Since active data cache 256 is primarily focused on automatic reporting,and not on querying, it generates substantially de-normalized tablesrepresenting each report or data stream. By logically placing thesede-normalized tables near client layer 142, in a non-obvious fashion,fewer processing stages are required and latency is substantiallyreduced.

Database tables are not commonly de-normalized, since data isduplicated. In general, duplicated data tends to increase the likelihoodof data corruption during updates. That is, multiple separate entries nolonger match each other. Furthermore, de-normalized tables tend to bemore difficult to query than normalized tables, since each individualdata record may be substantially larger, and hence take longer tosearch. This is even more so if the table is not properly indexed.However, since ad-hoc querying is not a substantial requirement, andtable joins are not necessary, normalization enables database tableswithin active data cache 256 to be optimized for the efficient creationof pre-defined reports and alerts. In one embodiment, a singlede-normalized table is the source for each report.

Active design process 290 is powerful, intuitive suite of applicationsthat allow a user to create rules, map onto message queues, managesecurity, define data objects, and configure enterprise link 254processes and sources, based on simple drag-and-drop operations for thedata streams, reports, and alerts. In addition to active design process290 in active data layer 241, there is a corresponding active designprocess client in client layer 142, such as a web browser. In oneembodiment, active design process 290 comprises an application entitledarchitect. Unlike traditional real time business intelligenceapplications, active design process 290 allows a user to dynamically addnew data sources, or create new transformations and reports, withoutchanging the system as a whole. That is, unlike the NASDAQ stock tradingexample previously shown, which is not easily modified, active designprocess 290 can easily tailor the active data platform to newapplications and changing corporate infrastructures.

Active report engine 274 converts the raw information in active datacache 256 into charts, tables, and graphs for display on a device in theclient layer 142. Active studio 291 is a presentation editor that allowsa user to easily create and format specific graphical and textual activeviews of data, based on pre-defined templates. Common views are tables,pie graphs, bar graphs, line graphs, scatter graphs, columnar reports,form reports, geographic (map) views, crosstabs, and Excel integration.For instance, a user can create an hourly report in which gamblingcustomers are aggregated into different groups based on the value oftheir accumulated betting that day. The user selects a bar graph for thereport, and changes the fill color and font type to the user'spreference. These views can be substantially active, changing in nearreal time as the underlying data changes, or the can be static, like aprinted report.

Event engine 257 monitors the information in active data cache 256 forpre-determined changes, or events. Once an event occurs, such as arising temperature in a chemical processing plant, message center 272 isnotified, subsequently forwarding the appropriate message to messagingclient 115, thin client 114, or rich client 282.

In one embodiment, message center 272 tracks the presence of clientdevices, as well as the status of users themselves, in order tosubstantially assure message delivery. This is in contrast totraditional messaging systems that cannot determine if messages are, infact, delivered to intended recipients. Presence determines if thedevice is available on the network. Status determines if the intendedrecipient is available to read and respond to the instant message.Common status categories include descriptive information, such as “outto lunch”, “busy”, “away from desk”, “important meeting”, etc. Forinstance, the device may be turned on and available, but the intendedrecipient is in an important meeting and does not wish to be disturbed.The intended recipient sets the status to “important meeting” in orderto notify message center 272, as well as any other subscribed user, thathe will probably not respond to the alert until after the meeting.Message center 272 would then choose an alternative available recipient,based on an established notification rule.

For example, a casino's active data platform attempts to notify thenearest pit boss of a particularly prolific gaming customer. However,since the pit boss has a “busy” status, the casino manager is alertedinstead, and subsequently walks over to greet the customer.

Enterprise security system 258 represents a company's existing securityinfrastructure, such as Steel-Belted Radius by Funk Software. Sinceoperational information may be sensitive, active data cache 256 can beintegrated into enterprise security system 258. In this way users areauthenticated before information is transmitted to client layer 142devices.

FIG. 3A illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying the active studio304 application of active data platform 210, as shown in FIG. 2B. Inaddition to active studio 304 application in active data layer 241,there is also a corresponding active studio 304 client in client layer142, such as a web browser.

FIG. 3B-E illustrate, in accordance with one embodiment of the presentinvention, several simplified de-normalized tables as would be used in acasino's active data cache 256, as shown in FIG. 3A. Referring to FIG.3B, a de-normalized table is shown describing payouts at specific gamingtables on the casino floor. For example, table 1, whose current pit bossis Jones, and whose current dealer is Brown, has a payout of $2000.Referring to FIG. 3C, a de-normalized table is shown describing thecurrent location of players in a casino. For example, player Bill Smith,who is a high roller, is currently at slot machine #1. Referring to FIG.3D, a de-normalized internal table is shown describing active serveruser profile information. For example, a system user with ID#1 prefersto receive notifications and alerts through email. Referring to FIG. 3E,a de-normalized table is shown describing the slot machine playerlocations, as well as slot machine statistics. For example, at slotmachine #1, Jones is the responsible pit boss, current player is ID, theslot machine has been idle for 5 minutes, the payout over time has been$5000, and the number of plays to win on average is 2000.

FIG. 4 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying event engine 257,as shown in FIG. 3. Event engine 257 is configured to monitor for avariety of events 402 generated throughout the network, as well aswithin the active data platform itself. A viewset event 406 b is achange to a modified data object, such as a database table with afilter. It would be generated by active reports engine 274, as shown inFIG. 2B. A system event 406 e is generated from the underlying operatingsystems or application, for instance, a change in the virtual memory ora cache miss. A file event 406 f is a change to a given file as storedin a file system. A performance event 406 g is a change in a system'sperformance, such as virtual memory utilization or network latency. Amanual event 406 h is an event entered by a user. An external event 406i is an externally generated through an API, and is used for such thingsas functional system verification. A time event 406 j is a change in thepassage of time, similar to a timer. A date event 406 k is a change indate. And, a presence event 462 l is the discovery of a client instantmessaging device that was previously offline, or the availability statusof a recipient has changed.

Event engine 257 is further comprised of four logical components: eventgenerator manager 428, rules manager 408, accountability manager 410,and actions manager 412. Event generator manager 428 maintains the stateinformation of monitored events 402 for rules manager 408. Rules manager408 is the primary event handler for the active data platform.Accountability manager 410 monitors the delivery status of all reportsand alerts. And, actions manager 412 initiates actions based on inputfrom the actions module 434 of the rules manager 408.

Event generator manager 428 maintains state information of monitoredevents 402 for rules manager 408. Constraint module 426 specifies theparameters that must be satisfied before evaluating an event and/or acondition and/or before applying the rule. Conditions module 424maintains information for the corresponding conditions module 432 inrules manager 408. It further specifies attributes relevant to thespecific event, other than constraints, which must be satisfied beforethe action associated with the rule may be taken. Events module 425maintains event information for the corresponding events module 430 inrules manager 408.

Rules manager 408 further includes three components in order to manageactive data: an events module 430, a conditions module 432, and anactions module 434. Events module 430 monitors all generated events 402within the active data platform. Conditions module 432 filters outnon-relevant events, and forwards the information to actions module 434,which in turn, initiates new system events based on criteria within rulesets 256. For example, all betting transactions are sent as events toevent generator manager 428, which in turn sends the information to theevents module 430 of rules manager 408. The conditions module 432 isconfigured to subsequently filter out all but the blackjack events. Theactions module, based on rules 256, then creates an internal systemevent to instruct the active reports engine 274, as shown in FIG. 2B, tocreate a report for all blackjack transactions above a threshold, asdescribed in rules 256.

Accountability manager 410 monitors the delivery status of all reportsand alerts. It further includes an unaccounted notifies module 438, anda report engine tie module 436. The unaccounted notifies module 438maintains the status of undelivered alerts and reports. That is,unaccounted notifies module 438 determines if a recipient cannot bereached, subsequently forwards a delivery-incomplete message to rulesmanager 408. Report engine tie 436 monitors for successfully receivedreports and alerts, and subsequently forwards a delivery-completemessage to rules manager 408. For example, a receipt notification statusmessage is received in accountability manager 410, which is subsequentlyprocessed. If the receipt notification status message comprises anacknowledgment, report engine tie module 436 further processes themessage and forwards the information to rules manager 408. However, ifan acknowledgment is not received, unaccounted notifies module 438processes the message and forwards the information to rules manager 408,which in turn allows active data cache to escalate alerts and reports toalternate recipients, based on status and presence, should the originalrecipient be unavailable.

Actions manager 412 initiates events and actions based upon input fromthe actions module 434. It further includes a notification module 416, agenerate event module 414, a run a plan module 418, a web service / MQmodule 420, and an others module 422. Notification module 416 forwardsany report and alert non-delivery messages to unaccounted notifiesmodule 438. Generate event module 414 generates system events initiatedby actions module 434 in rules manager 408. Run a plan module 418executes script based on rules 256. Web service / MQ module 420 providesan interface to third-party web-services based on WSDL (web-servicedescription language), as well as message queue applications. Othersmodule 422 is an API that allows additional modules to be later added.

FIG. 5 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying components of richclient 282 and active data cache 256, as shown in FIG. 3.

Rich client 282 is comprised of a main application 536, a renderedreports 540 component, and a re-notify applet 506 component. Mainapplication 536 provides the core environment for client interface tothe active data cache 256. It comprises several functional componentsthat can dynamically render incoming data streams from active data cache256, and locally create reports, such as report builder 538. Renderedreports 540 functions as a viewer to display reports from active datacache 256 which already have been assembled. Re-notify applet 506displays notification messages to the user.

In a non-obvious fashion, rich client 282 substantially maintains anopen TCP-IP connection to active data cache 256, through the executionof blocking HTTP request in a second open browser window. Internetbrowsers normally implement HTTP, an asynchronous protocol that usesmultiple short-lived synchronous TCP-IP connections to render theobjects on a web page. For instance, a connection is opened, a pictureis rendered, and the connection is closed. However, in the currentinvention, a web server periodically sends keep-alive messages to thesecond open browser window, in order to prevent a TCP-IP connectiontimeout. Through the use of this code, a TCP-IP connection is kept open,allowing data to be sent in a substantially continuous way to richclient 282, without having first to refresh the browser window. Thus,the dynamic rendering process in the primary browser window is morereadily controlled. For example, the following JavaScript code may beexecuted by the second browser window:

Line 1: <script id=’s1’> Line 2: parent.ProcessActiveData(‘ “ +viewsetID + “ ‘ , ‘ “ + strXML + “ ‘); Line 3: s1.removeNode(true); Line4: </script>viewsetID indicates the viewset to which the active data applies,whereas strXML refers to an XML document describing new data. Line 1indicates to the browser that the following section need not be renderedsince it is a script section. The execution of line 2 causes the reportin the main application (active studio or active viewer) browser tochange. The execution of line 3 removes the script from the page. Andline 4 indicates to the browser that the script section has ended.

Active data cache further comprises functional components thatfacilitate the generation of a report. These are: a report executioncomponent 522, a view execution component 524, a report buildercomponent 528, a rule builder component 530, a modifier buildercomponent 532, data object builder component 534, a structured datasupplier component 526, and a message center gateway 536.

Report execution 522 creates, caches, and then forwards specific reportsbased on configuration, to either rendered reports 540 for reportbuilder 538. View execution 524 likewise creates and forwards views toreport builder 538. Views are data objects that may be filtered. Reportbuilder 528 pre-processes extracted information from multiple sources,and transforms the aggregated data into a format optimized for use inmultiple reports. Rule builder 530 pre-processes stored rules frommultiple rule caches for use in the generation of multiple reports.Modifier builder 532 pre-processes intermediate informationtransformations, such as additional metrics that the user wishescalculated and reported. Data object builder 534 pre-processes dataobjects into optimized formats for report execution component 522.Structured data supplier 526 forwards external pre-processed data toreport builder 528.

FIG. 6 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying components ofmessage center, as shown in FIG. 3. Message Center 272 providesmessaging functionality to the active data platform. It allows reportsand alerts to be sent via heterogeneous channels to a plurality ofclients. Message center 272 further includes an API layer 605, apresence and notify 612 module, a rich client 614 interface, a thinclient 616 interface, an email interface 618, an IM interface 620, otherinterfaces 624, a local user information 626 module, and an IM clientmanager 628 module.

API layer 605 provides a uniform application interface for systemgenerated events, such as notification request 608, administrationrequest 606, and presence request 604. Presence and notify component 612provides the main messaging infrastructure for the active data platform.It insures that the reports and alerts are properly routed to intendedrecipients. Local user information 626 maintains a local cache of userprofile information, such as names, passwords, and delivery preferences.

Rich client interface 614 is further coupled to rich client 282, whichprovides the user with enhanced visualization functionality, such as thecapability to graphically render streaming data. Thin client interface616 is coupled to thin client 112, which further comprises agentapplication 660. Since thin client 114 is commonly a browser withoutpresence functionality, agent 660 notifies presence and notify component612 that a given report or alert is being viewed. Agent 660 is commonlyan Active X component or ajava applet. Email interface 618 is furthercoupled to email server 632, such as an SMTP server, which forwardsmessages to email client 11 5 a. IM interface is further coupled to IMclient manager 628 which sends a notification request 630 to IM client115 b. Instant messaging (IM) is a means for sending small, simplemessages that are delivered immediately to online users. It differs fromemail primarily in that its primary focus is immediate end-userdelivery. Through an IM client application, a user can discover andimmediately begin a text conversation, or chat session. Common publicinstant message systems include AOL Instant Messenger, MSN Messenger,Yahoo! Messenger, Microsoft Exchange 2000 IM, and Lotus Sametime.

For example, a casino's active data cache identifies particularlyprolific gaming customer. The active data cache forwards a notificationrequest 608 to message center 272. The presence & notify module 626 thendetermines if the intended user's device is present, and the user isavailable. If so, message center 272 forwards an alert through IMinterface 620 to IM server 630, and finally to IM client 657.

Unlike like the prior art, the active data platform is general purpose,and is substantially customizable by entering new parameters in activedesign process 290 and the active studio 291, as shown is FIG. 3A.Furthermore enterprise links 254, also shown in FIG. 3A, allows activedata platform to quickly adapt enterprise data sources to changingnear-real time BI needs.

Referring now to FIG. 7A, an exemplary active studio screen display isshown according to an embodiment of the invention. This display is usedby a user in order to easily manage the generation and secure deliveryof data streams, reports, and alerts, without substantial additionalcomputer programming.

The display is divided into three sections, a tab pane 701, a functionpane 714, and a display pane 715. Tab pane 701 further allows the userto select one of various functional displays within active studio 304,such as: home 705, my reports 706, shared reports 707, personalize 708,and alerts 709. Home 705 comprises a summarized view of the user's mostrecent activities. My reports 706 comprises a summarized list of theuser's created reports. Shared reports 707 comprises a summarized listof third-party reports to which the user has subscribed. Personalize 708comprises administrative components that can allow the user to modifyreport delivery and display parameters. And alerts 709 comprises asummarized list of a user's active alerts.

Function pane 714 displays several functional list boxes within home 705tab, such as: recent list box 710, new list box 711, list toolbox 712,and actions list box 713. Recent list box 710 displays the user's mostrecently accessed reports. The new list box 711 displays the user's newreports. The alerts list box 712 displays the user's currently activealerts. And the actions list box 713 allows the user to create and editreports. Display pane 715 displays the corresponding result of the chosefunction of function pane 714. In this case, a dynamic financial reportcomprising a cost bar graph and a percentage change line graph. Forexample, if a user where to select intraday sales by region in the newlist box 711, the corresponding dynamic intraday sales report would bedisplayed in display pane 715. As sales are booked through out the day,the sales chart would dynamically change as well.

Referring now to FIG. 7B, an exemplary report viewer screen is depictedaccording to an embodiment of the invention. There are three functionsavailable from this view, launch active studio 719, email 717, and print718. Display pane 715 allows the user to view the selected report, inthis case, a Q1 sales report. Launch active studio 719 allows the userto open the viewed report in the Iteration Active Studio. Email 717allows the user to mail the viewed report to an email recipient. Print718 allows the user to print out the viewed report on an attachedprinter.

Referring now to FIG. 7C, the exemplary active studio screen display ofFIG. 7A is shown with the components of my reports tab 706. Functionpane 714 further displays two sub tabs, a task bar tab 723 and a folderstab 724. Task bar 723 tab allows the user to select various functionsrelated to the current view, in this case, a report summary view.Folders 724 tab allows the user to organize created or stored reports inan hierarchical format. Two components within the task bar tab 723 arereport creation 725 and guide 726. Report creation 725 allows the userto create new active data. Guide 726 provides a source of online help tothe user.

Referring now to FIG. 7D, the exemplary active studio screen display ofFIG. 7C is shown with additional components of the my reports tab 706,such as the report creation toolbox 723, the report properties toolbox748, and the guide window 749. The report creation toolbox 723 furthercomprises functions to easily create specific graphical views 740 ofdata, based on pre-defined templates. Common views are tables, piegraphs, bar graphs, line graphs, scatter graphs, columnar reports, formreports, geographic (map) views, crosstabs, and Excel integration. Theseviews can be further modified in the report properties toolbox 748. Forinstance, a user can create an hourly report in which gambling customersare aggregated into different groups based on the value of theiraccumulated betting that day. The user selects a bar graph for thereport, and changes the fill color and font type to the user'spreference.

Referring now to FIG. 7E, the exemplary active studio screen display ofFIG. 7C is shown with an additional example of the my bar graph 776function window, which allows the user to further customize the selectedreport with specific data objects and files. In general, three types ofattributes can be customized: views 770, data 772, and properties 774.Views 770 allows a user to modify the types of graphical displaysavailable in which to view the current data, such as a bar graph, linegraph, etc. Data 772 allows a user to select the specific data fields tobe used in views 770. Properties 774 allows a user to modify otherattributes, such as language, number formats, etc. In this case, theuser has selected a bar graph template for the report, and has addedfour fields.

In another aspect of the invention, an Iteration instant messaging &collaboration server is advantageously employed to enable rich securegraphical collaboration in an instant messaging environment. Instantmessaging systems commonly monitor the presence of devices, andavailability state of users. Presence determines if the IM device iscoupled to the given IM network, or at least reachable from the client.Status determines if the intended recipient is available to read andrespond to the instant message. Common status categories also includedescriptive information, such as “out to lunch”, “busy”, “away fromdesk”, “important meeting”, etc. For instance, the IM device may beturned on and available, but the user is in an important meeting anddoes not wish to be disturbed. The user would set the status to“important meeting,” in order to notify other subscribed IM users thathe will probably not respond to a text message until after the meeting.

These IM systems, however, commonly lack the capability for graphicalpeer-to-peer or multi-party collaboration. That is, while short textmessages can be sent back and forth in an online chat meeting, there isno comparable means for sharing a graph or report. This would normallyhave to be compressed and transmitted ahead of time to each recipient,who would each then download, de-compress, and locally store the file.In situations where the underlying data is continuously changing, astemperatures would be in a chemical plant, and impromptu collaborationis desired, pre-mailing a graph would be very impractical, inefficient,and of marginal use to the problem at hand.

Furthermore, public IM systems are not particularly secure. They wereoriginally designed for rapid information text conversations, calledchat. IM protocols emerged and were established primarily withoutsupervision from any standard bodies, such as the Internet EngineeringTask Force. Subsequently, security was never originally considered andcommon instant messaging traffic is essentially unencrypted. Just aboutanyone on the network can secretly monitor a chat conversation.

FIG. 8A illustrates, in accordance with one embodiment of the presentinvention, an active collaboration server advantageously employed toallow impromptu graphical collaboration between IM users. As shown inFIG. 2B, event engine 257 forwards an event, such as a temperaturechange, to message center 272, through API 803. Event engine 257monitors the information in active data cache 256 for pre-determinedchanges, or events. Message Center 272 provides messaging functionalityto the active data platform, allowing reports and alerts to be sent viaheterogeneous channels to a plurality of clients.

User manager 811 manages user profile information. Users create profilesbased on rules, in which they describe events of which they want to benotified. Should such an event occur, user manager 811 notifies messagecenter 272, which in turn contacts the user. Furthermore, user manager811 selects alternative recipients, if the primary recipient isunavailable, based on user preference and availability status. Forinstance, user #1 has configured user manger 811 for notification of aspecific event, for example a temperature change beyond a certain range.Furthermore, user #1 also wants user #2 to be notified should user #1 beunavailable. Once the event occurs, if user #1 is unavailable, messagecenter 272 attempts to notify user #2. Presence manager 813 monitors forthe availability of user devices on the network. For instance, in theprevious example, user #1 has a wireless PDA and a SMS phone. If theevent occurs, and the PDA is turned-off, an alert is sent to the SMSphone instead.

IIM (Iteration instant messenger) interface 806 provides an interface tothe IIM client 819-823, an enhanced IM application that allows secureconcurrent graphical collaboration and pen-based user input. In general,it is sometimes desirable to implement private instant messaging systemshaving enhanced capability (including different protocols, encryptioncapabilities, graphical processing/display capabilities, I/Ocapabilities, and/or the like) compared to public messaging systems(such as those available from Yahoo™, AOL™, and the like). IIM client isan example of a client in such a private instant messaging system.

IIM client 819-823 commonly connect through active collaboration server817, which marshals collaboration request from multiple IIM clients, andcombines connections whenever possible to improve overall systemperformance and scalability. Furthermore, active collaboration server817 synchronizes the text and graphical portions of the IIM session toinsure that all users view the same information at substantially thesame time.

Active collaboration server 817 further enforces security protocols asimplemented by the IIM client, in order to prevent unauthorizedinterception of the collaboration session. In one embodiment, IIM client819-823 implements a Triple DES security protocol to protect thecollaboration session and insure message integrity. Triple DES is anencryption algorithm whose security is based on a single secret key.Each key is generated (selected at random from all possible keys) foreach particular collaboration session.

In another embodiment, only one user in an IIM collaboration sessionneeds authorization to access a given alert or report. By virtue ofbeing authenticated to the session, all other users will receive thealert or report with the security privileges of authorized user, for aslong as these users participate in the session.

In addition to IIM interface 806, there is SMTP interface 807 and otherIM interface 809. SMTP, or simple mail transfer protocol, is the mostcommon protocol for sending email message on the internet. Through SMTPinterface 807, message center 272 can forward email notifications withthe event information to email server 815. Unlike IIM client 819-823,however, notification is not automatic. The user must first log ontomail server 815 with a SMTP client 827, such as MS Outlook and downloadthe messages. Likewise, other IM interface 809 represents traditional IMinterfaces to currently available IM systems 831, such as AOL InstantMessenger, MSN Messenger, Yahoo! Messenger, Microsoft Exchange 2000 IM,and Lotus Sametime. In contrast to SMTP, notification can be automatic,although communication is generally insecure. Furthermore, graphicalcollaboration is difficult.

For example, user #1 is a chemical engineer at a petroleum processingplant. He created a profile in user manager 811, in which he wants to benotified of specific event, such as a change in a process temperaturebeyond a certain range. The event occurs. Message center 272 forwardsthe notification to active collaboration server 817, through IIMinterface 806. Seeing the temperature dynamically change on his device,user #1 realizes that he wants additional advice from user #2, hismanager. Through his IIM device, he instructs message center 272 toinitiate a request for collaboration with user #2. Receiving acollaboration request from his subordinate, user #2 accepts theconnection. User #1's display is immediately rendered on User 2'sdevice, upon which they collaborate on the matter at hand.

Referring to FIG. 8B, IIM client 823 and active collaboration server 817as shown in FIG. 8A, are described in greater detail. The user interfaceof IIM client 823 is comprises of four panes: a graphical display pane854, a chat text display pane 856, a pen entry pane 858, and a chat textentry pane 860. Graphical display pane 854 is the main rendering windowfor IIM client 823. It allows a user to make better sense of largeamounts of dynamic data, presenting changing information in an easilyaccessible, graphical visual representation. Chat text display pane 856displays IM messages in a formatted way, using a choice of colors andstyles. Pen entry pane 858, allows the IM device to recognize a user'shandwriting. Chat text entry pane 860 allows the user to enter textthrough a keyboard.

For example, user #1 is a network systems engineer monitoring traffic ata company's e-commerce web site. When network congestion reaches acertain point, active report engine 274 generates a report and forwardsit to user 1. Realizing that customers are starting to have difficultyplacing online orders, user #1 initiates a connection with user #2, theweb site manager, and user #3, the customer service manager. Once bothaccept, user #1's display is immediately rendered on the other devices,upon which all can collaborate on the mater at hand.

In another embodiment, an instant messaging manager is advantageouslyemployed to rapidly alert intended recipients of data events. Referringto FIG. 9A, a simplified functional diagram is shown of a rules-basedmonitoring engine with alert capability, such as in a BI or OLAPapplication. Enterprise systems 902 comprise the series of applicationscommonly used to run and manage a business, such as OLTP, datawarehouse, and OLAP. OLTP (online transaction processing) applications902 are those enterprise systems that manage a company's basictransactions, such as order entry and billing systems. In order toconduct meaningful analysis, this information is often further placed ina more stable environment, optimized for random querying, such as a datawarehouse. OLAP enables trained users to perform sophisticated ad hocanalysis of data stored in a data warehouse.

Rules-based monitoring engine 916 monitors the applications inenterprise systems 902 for pre-defined events. A rule is s pre-definedprocedure comprising the event(s) to be monitored, and the subsequentaction or transformation that is required. For example, the event can bea specific transaction, a change in a file size, the publishing of areport, etc. Rules U/I 920 is typically graphical application thatallows a user to create sophisticated and complex rules, as well asstore the rules in the rules db 918 for use by rules based monitoringengine 916. In this case, the subsequent action is an alert.

When a specific event occurs, rules-based monitoring engine 916 forwardsan alert to notification engine 924 a, which properly formats the alertand transmits it via email system 915 a, pager system 915 b, or anothersystem through proprietary API 915 c. Alerts sent to email system 915 acan further contain an embedded link to a report generated by activereports engine 274, as shown if FIG. 2B.

For example, betting transactions would be normally stored in a casino'sgame transaction system. Wanting to be extra-attentive to high-rollers,a casino would configure the rules based monitoring engine 916 toobserve for any customer whose betting exceeds a specified threshold,upon which an alert would be sent to the closest pit boss with anembedded link to the customer record.

FIG. 9B, in accordance with one embodiment of the present invention,shows the simplified functional diagram of a rules-based monitoringengine with alert capability of FIG. 9A, with the addition of instantmessaging manager 924 b. Instant messaging (IM) is a means for sendingsmall, simple messages that are delivered immediately to online users.It differs from email primarily in that its primary focus is immediateend-user delivery. Common public instant message systems 915 d-f includeAOL Instant Messenger, MSN Messenger, Yahoo! Messenger, MicrosoftExchange 2000 IM, and Lotus Sametime. Through a locally installed clientapplication, a user can normally discover the presence of another user,and immediately begin a text conversation, or chat session. Many systemsalso have the capability for group chat sessions. Instant messagingmanager 924 b enables the rules based monitoring engine 916 to appear asan IM client to the various instant message systems 915. Therefore noadditional software is needed, beyond the IM client application that ismore than likely already installed.

As in FIG. 9A, there is shown a simplified functional diagram of arules-based monitoring engine with alert capability, such as in a BI orOLAP application. Rules-based monitoring engine 916 monitors theapplications in enterprise systems 902 for pre-defined events. Rules U/I920 is typically graphical application that allows a user to createsophisticated and complex rules, as well as store the rules in the rulesdb 918 for use by rules based monitoring engine 916. In this case, thesubsequent action is an alert.

Instant messaging manager 924 b properly formats the alert as an instantmessage and transmits to the intended recipient through on of thevarious instant message systems 915 d-f. Unlike notification engine 924a, however, instant messaging manager 924 b also monitors the variousinstant message systems 915 d-f for changes in state for any subscribedusers. State is comprises of presence and status. Presence determines ifthe IM device is coupled to the given IM network, or at least reachablefrom the client. The given instant message system 915 d-f normallydetermines the presence of individual IM clients, and broadcast theinformation to interested parties, such as the instant messaging manager924 b. Status determines if the intended recipient is able to read andrespond to the instant message. Normally whether a recipient isavailable or not is a true or false question. However, it is common forrecipients to customize the unavailable status with further descriptiveinformation, such as “out to lunch”, “busy”, “away from desk”,“important meeting”, etc.

For instance, the IM device can be turned on and available, but the useris in an important meeting and does not wish to be disturbed. The usercan set the status to “important meeting” notifying any other subscribedusers that he will probably not be able to respond to the instantmessage until after the meeting. The rules-based monitoring engine 916,realizing that the user will not immediately read the instant message,will choose an alternative present and available user based on apre-determined notification rule. Rules-based monitoring engine 916 canforward an alert to instant messaging manager 924 b for immediatedelivery to the intended recipient.

Referring now to FIG. 10A, simplified pseudo-code is illustrated aswould be used by IM client manager 628, as shown in FIG. 6, to notifyrunning processes of user status changes. In procedure 1,ProcessMessagesFromServer with a message argument, IM client manager 628receives a message from an instant message system. It then determineswhether it is a user status in procedure 7, case: UserStatuses. If so,then procedure 15 is called, Process_User_status_messages with anuserStatusObjects collection argument. It then updates the user datastructure at procedure 18, HashOfUserObjects.update, and subsequentlynotifies any active processes running on the active server platform ofthis status change.

FIG. 10B illustrates, in accordance with one embodiment of the presentinvention, simplified pseudo-code as would be used by IM client manager628 to determine presence and status for IM clients. In procedure 1, theBoolean IsUserPresent is passed a user (i.e., IM name) and optionaldegree of presence arguments (i.e., available, non-available, etc.).Initially in procedure 4, if(!HashOfUserObjects.contains) with a userargument, the entered user name is compared to existing list ofpotential users registered with the active data platform. If not, anexception is thrown, and the procedure returns an error. If true,procedure 8, if (HashOfUserObjects[user].degree>degree) further checksto see if the optional degree of presence variable that was passed toprocedure 1 is less than the degree of presence previously stored in theactive data platform. The function then returns the result as either atrue or false.

FIG. 10C illustrates, in accordance with one embodiment of the presentinvention, simplified pseudo-code as would be used by IM client manager628 to subscribe to a specific IM user. In procedure 1,RegisterlnterestInUser( ) is passed a user (i.e., IM name) and optionaldegree of presence arguments(i.e., available, non-available, etc.). Thisis passed to procedure 3, CollectionofinterestingUsers.add, whichsubsequently registers interest in the user.

In another embodiment, an event engine is advantageously employed tosubstantially assure the examination of a report by a user. Manyanalytical products such as business intelligence (BI) and onlineanalytical processing (OLAP) systems are capable of monitoring,scheduling, and broadcasting alerts via email or pager. These systems,however, cannot generally assure that the intended recipient promptlyreceives and reads the message. This presents a significant problem fortime-sensitive information, where minutes or even seconds can make adifference.

In the current invention, the event engine monitors the state oftransmitted alerts in an escalation table. Upon receipt of an alert, theuser reviews the received report. This is commonly done by manuallybrowsing for the report, or by clicking an embedded URL contained withinthe alert. If the user does not review the report within a specifiedtime, the escalation table can further escalate the alert to anotheruser based upon predefined rules. For instance, the alert is transmittedto the user's manager.

Referring to FIG. 11, a simplified functional diagram displaying theactive data platform is shown with elements of the notification andescalation process. Advantages include substantially improving alertaccountability in business intelligence applications. That is, enablingthe right person to receive critical information at the right time, andif not, escalating the information to the appropriate person.

Enterprise data 140 comprises those enterprise systems that manage acompany's basic transactions, such as order entry and billing systems.Active data cache 256 monitors transaction data packets 1104 generatedby enterprise data 140. Active data cache 256 further comprises userdata manager 1108, which describes user event interest, and monitoringrule manager 1111, that analyzes data packet 1104 for specific events.

Should an event of interest occur, monitoring rule manager 111 forwardsa rule fired message 1116 to the rules list manager 1120 of event engine257. Rules list manager 1120 further comprises the subsequent actionsrequired for the fired rule, such as the transmission of a notificationmessage to a user, the execution of a subsequent rule, or the generationof an accountability escalation event. In this case, notificationmessage 1130 is forwarded to message center 272. Rules list manager 1120also places an entry into escalation table 1120, describing notificationmessage 1130, the intended recipient, and the time the message was sent.If a report viewed message 1176 is not received within a pre-determinedamount of time, a timeout occurs, and escalation table 1122 notifiesescalation manager 1138, which in turn executes pre-configuredescalation rules, such as notification of a different person or entity,or the calling of a web service.

Upon receiving notification message 1130, user address manager 1142attempts to find a device address at which the user is currentlyavailable. Message center 272 further embeds a link in notificationmessage 1146, through which the user can review the corresponding reportfrom active reports engine 274.

The user subsequently receives notification message 1146 on his device,in this case, through a browser. If not already viewing the report, theuser can either locate the report by manually entering information suchas a URL, or can also simply click on an embedded link to the report.

Upon receiving a request, report supplier 1168 of report engine 274,generates the report from information in the active reports table 1170,and forwards it to user device 1150. A report viewed message 1176 isalso generated and forwarded to escalation table 1122, which in turndeactivates the previous notification message entry.

For example, a large multi-site manufacturing organization, such as FordMotor Company, would configure the active data platform to monitormanufacturing processing information, such as increasing part rejectrates, or outright machine failures. Should a machine failure actuallyoccur, an alert is forwarded to the appropriate manufacturing processengineer. The alert would contain an embedded link to the specificmachine's status report, as generated by active reports engine 274. Ifthe process engineer did not review the report within a few minutes (orany time period specified), a new alert would be immediately forwardedto the local plant manager for immediate action.

Referring to FIG. 12, a simplified diagram of a common instant messagingclient displaying notification message 1146 is shown in FIG. 10. In thiscase, an alert message with a link 1202 to the budgetbuster report isshown. Upon clicking link 1202, a report would open in a new browserwindow. Furthermore, a report viewed message 1176 would be generated andforwarded to escalation table 1122, as shown in FIG. 10.

In accordance with one aspect of the present invention, rule evaluationis advantageously distributed in order to improve efficiency. To furtherelaborate, a rule often comprises multiple interdependent components(i.e., event, constraint, condition, and action) that must be evaluatedand acted upon.

The first component of a rule is the event, which specifies the event ofinterest. An example of an event is when the sales volume exceeds 5,000units. If the sales volume exceeds 5,000 units, the event component issatisfied.

The second component of a rule is the constraint, which specifies theparameters that must be satisfied before evaluating an event and/or acondition and/or before applying the rule. A constraint is usuallyprovided for efficiency reason and commonly comprises dates, times,and/or frequencies. For instance, if the specific event described in theevent clause (e.g., sales volume in the previous example) does not needto be monitored over the weekend or between certain times or more oftenthan a given frequency, then the constraint clause would instruct theevent engine to that effect. Typically a constraint is evaluated to beeither true or false. In one embodiment, if the constraint is evaluatedto be false by the event engine, the satellite evaluation engine isinformed accordingly and does not even need to spend its resourcesevaluating the event. Advantageously, efficiency is improved.

The third component of a rule is the condition, which further specifiesother attributes relevant to the specific event, which attributes mustbe satisfied before the action associated with the rule may be taken. Inthe previous example, the condition may be to take action only if thesales volume that fires the event is achieved without any specialpromotion in place. Generally speaking, all conditions may be thought ofas events but not all events are conditions.

The fourth component of a rule is the action, which determines thecourse of action taken should the event, constraint and/or conditioncomponents are satisfied. For instance, the sending of a notification toa specific person may be an action that needs to be taken if, as in theprevious example, during a weekday (constraint satisfied), the salesvolume exceeds 5,000 units (event satisfied) and the sales volume isachieved without any special promotion in place (condition satisfied).

It should be noted that a rule typically includes an action but a ruledoes not require all three other components, i.e., event, condition, andconstraint. A rule may have one, two, or three of these components asdesired by the rule designer. Furthermore, each of the event, condition,constraint, and action components may be a complex Boolean operationcomprising multiple sub-components. A preferred embodiment, however, isa single event component per rule.

For example, an event may be satisfied if sales volume is greater than5,000 and the total revenue is greater than $10,000 (a Boolean operationof two sub-events).

In order to reduce design complexity, a common solution has been toevaluate and execute these rules in a centralized event engine. It isfound, however, that the information that needs to be monitored andevaluated can be found anywhere on the enterprise network. It is oftenthe case that the information that must be monitored and evaluated(e.g., the event or condition) may be distributed in one or moremachines (such as servers) remote from the computer executing thecentralized event engine. In some cases, only 5% of the information maybe relevant to a particular rule. Yet when the rule evaluation iscentralized, all the data that needs to be monitored and evaluated mustbe transmitted across machine and/or process boundaries for thecentralized event engine to perform its rule evaluation task. In anetworked environment, the remaining 95% of the information that isneedlessly sent represents an inefficient use of scarce networkresources and bandwidth, as well as a detriment to performance.

In accordance with one embodiment of the invention, rule evaluation isdistributed in one or more satellite evaluation engines local to orcloser to the origin of the monitored information. The evaluation isdistributed in satellite evaluation engines that are in communicationwith an event engine. Distributed rule evaluation allows the evaluationof a rule to take place with reduced bandwidth usage and delay. Sinceactive data and the timely report/notification responsive to active dataare important aspects of the active data platform, minimizing delay isan important consideration, and the distributed evaluation mechanismsubstantially furthers that goal.

To facilitate the implementation of distributed rule evaluation, it ishighly preferable that a universal rule syntax be developed that allowsthe event engine to analyze any given rule and decides which portion ofthe rule should be distributed and which portion of the rule should beprocessed by the centralized event engine.

In accordance with one embodiment of the invention, a rule syntax isdeveloped in which the four components of a rule (event, constraint,condition, action) are specified as clauses in a specific order tofacilitate parsing.

For example, the following is a simplified example of a rule that may beexecuted:

Clause 1: ON viewset.changed(“QTD Sales”)

Clause 2: WITH OnlyDayWeek(“MON-FRI”)

Clause 3: IF Time.Between(9,17) AND Date.EndofQuarter( )

Clause 4: DO notify.send(“Joe”, “email”)

Clause 1 describes the event to be executed by the satellite evaluationengine, in this case, the viewset application. The event is a change toQTD Sales information. Clause 2 comprises the constraint clause. Itdescribes that the event will only be monitored from Monday to Friday.Clause 3 comprises the condition, further qualifying the situation thatoccasions the firing of the action. In this case, if the time wasbetween 9:00 a.m. and 5:00 p.m. (i.e., 1700 hrs), and if the datecorresponds to the end of the quarter. Clause 4 describes the action. Inthis case, the action is to send an email to user named Joe if theevent, constraint, and condition are satisfied. Of course, these fourcomponents may be ordered in a different order if another syntaxconstruct so dictates.

In accordance with one embodiment of the present invention, a rule isparsed to one or more core events, which are then distributed to one ormore appropriate satellite evaluation engines to facilitate evaluationof the distributed event(s). In the previous example, the rule may beparsed and the event pertaining to the sales volume may be distributedto, for example, the satellite evaluation engine associated with theactive data cache. The satellite evaluation engine then evaluates themonitored data (sales volume in this example) and communicates theresult (which may be simply true/false or may include pertinent salesvolume data) back to the event engine. Meanwhile, the event engine isoffloaded from the task of handling that rule until the event issatisfied.

To further improve efficiency, the centralized event engine may not evenparse all components of a rule until the event is satisfied. Thus, if anevent is never satisfied, no resource has been wasted parsing the entirerule and preparing the centralized event engine and/or the satelliteevaluation engine(s) to handle the other components (which may neverneed to be handled if the event is never satisfied). Further, thesatellite evaluation engine may only send information back to the eventengine if the event evaluates to be true. Thus, if the sales volume isbelow 5,000 in the previous example, no message is sent from thesatellite evaluation engine to advantageously avoid wasting bandwidth.Of course, as mentioned earlier, the evaluation of an event may be heldoff by the satellite evaluation engine to further avoid wasting resourceunless the constraint is evaluated to be true by the centralized eventmonitor.

If the event is evaluated to be true at the satellite evaluation engine(and assuming any applicable constraint is also evaluated to be true),the satellite evaluation engine informs the centralized event engine,which may then evaluate the condition using either the same or anothersatellite evaluation engine or using the centralized resource. If thesame or a different satellite evaluation engine is also used to evaluatea condition, the event monitor may send out the parsed condition and askfor the result of the evaluation of the condition. As the exemplarysyntax above indicates, each of the event, constraint, condition, andaction may be (but not required in all cases) implemented as a function.Distributing rule evaluation thus may comprise using the appropriatesatellite evaluation engine to make the required function call.

Referring to FIG. 13, in accordance with one embodiment of the presentinvention, a simplified functional diagram illustrating the morerelevant components of an exemplary active data platform in whichdistributed rule evaluation is implemented. Event engine 257 employs asatellite evaluation engine manager 1302 to distribute and manage theevaluation of certain components of a rule in one or more eventsatellite evaluation engines. The distributed evaluation results arethen received by monitor manager 1302 for use by event engine 257.

Satellite evaluation engines 1036 a-1036 h are some exemplary satelliteevaluation engines employed by the active data platform of FIG. 13.Viewset satellite evaluation engine 1306 a observes changes to databasedata objects, such as the modification of a database filter or certainchange in the data in the active data cache. Presence satelliteevaluation engine 1306 b observes changes to the availability of devicesand the status of users. Time satellite evaluation engine 1306 cobserves time changes. Date satellite evaluation engine 1306 d observesdates changes. System satellite evaluation engine 1306 e observeschanges to the underlying operating systems or applications, forinstance, a change in the virtual memory or a cache miss. File satelliteevaluation engine 1306 f observes changes to a given file as stored in afile system. External satellite evaluation engine 1306 h observesexternally generated events through an API. These external events can beused for integration with other applications. Other satellite evaluationengine 1306 i represents additional events that can be programmaticallymonitored by event engine 257.

In accordance with another embodiment of the present invention, there isprovided a universal function call syntax to facilitate the task ofdistributing certain aspects of rule evaluation to one or more satelliteevaluation engines. As discussed above, the rule syntax allows an event,a constraint, a condition, or an action to be specified as a function.Thus, the function call syntax may have the following construct:

satname.funcname (argument₁, argument_(N))

where satname is the name of the satellite evaluation engine. Funcname,which is separated from satname by a symbol such as a dot, is the nameof the function. The arguments represent optional arguments of thefunction.

By creating a universal function call syntax, the inventionsubstantially simplifies the task of specifying that a particularsatellite evaluation engine should handle a particular event orcondition. Furthermore, the function syntax improves scalability in thatwhen a new satellite evaluation engine is added to the system, only thesatellite evaluation engine name needs to be changed and the remainderof the syntax may be reused. Also, if a new event or condition isspecified vis-a-vis an existing satellite evaluation engine, only thefunction name needs to be changed.

In one embodiment, a rule template library may be provided to allowusers to leverage on work done by others. A rule template is simply arule with certain argument(s) not completely specified. For example, arule template may specify that if the sales volume exceeds 5,000 on aweekday and no special promotion is involved then notify person X. Inthis case, person X represents the argument that remains to be filledout to turn the rule template into a rule instance. In this example, thefilling out of the person may be automatically accomplished by fillingin the missing argument with the identity of the user accessing the ruletemplate. In other cases, the missing arguments may be filled out by theuser wishing to employ the rule template.

Of course the user can always edit existing rules (i.e., complete ruleinstances) to fit his needs. For example, the user can access anexisting report and edit the rules therein to modify the argumentsrelated to the event, condition, constraint, and/or action so that thenewly created report would contain the information needed. The universalrule syntax renders it simple to implement rule templates and makes iteasy for users to convert a rule template to a rule instance or tomodify an existing rule to fit his needs.

In another aspect of the current invention, an active data architectureis advantageously employed to maintain application execution over anintermittent network connection. In one embodiment, the intermittentnetwork connection is a wireless network, such as 802.11b. In anotherembodiment, the intermittent network connection is a wired network, suchas Ethernet. In another embodiment, the data transmitted on theintermittent network connection is XML. In another embodiment, the datatransmitted on the intermittent network connection is DHTML.

Modern data networks, such as the Internet, allow packets to arrive attheir destination by multiple paths. However, since different portionsof the network may be congested to different degrees, transmittedpackets can sporadically arrive. Should the arrival delay betweensuccessive packets become sufficiently long, an intermittent connectionresults. Furthermore, in wireless networks, an intermittent networkconnection may also be caused by ambient radio interference, or by deadpockets, caused by multi-path. Multi-path is interference caused whensignals bounce around between obstructions, creating multiplereflections of the same signal. Small changes in the spatialrelationship between the transmitter and the receiver (i.e., by walkingaround) can substantially alter the extent of multi-path interference,and the subsequent degree of network connection intermittence.

For many applications, such as static web pages, an intermittent networkconnection is tolerable. Though potentially bothersome to a user, theutility of the web page is generally not diminished by the waiting a fewminutes. For others, such as streaming applications, an intermittentnetwork connection is problematic. These applications may require acontinuous supply of packets in order to properly function, since theyare generally designed to receive, buffer, render, and discard packetsover a period of time. And although buffering a surplus of packets mayimprove perceived latency, upon depletion, the streaming application canfreeze and even drop the connection altogether. Since this oftenrequires the connection to be actively reestablished, should a user besubsequently preoccupied, reestablishment of the connection could besubstantially delayed. Furthermore, in situations where the streaminginformation may be both urgent and dynamic, such as with active data, anopportunity for the user to react may be entirely lost.

A more optimum solution may be to provide functionality that allows thestreaming application to temporarily pause and passively re-establishthe connection for the user. In one embodiment, the streamingapplication comprises a communications browser window coupled to arendering browser window, wherein the communications browser windowmaintains the connection, and the rendering browser window renders thereceived data stream. In yet another embodiment, this coupling isestablished through Microsoft JScript. In yet another embodiment, thiscoupling is established through Javascript. In yet another embodiment,the data stream is comprised of a set of event notifications. In yetanother embodiment, the last rendered display is statically maintainedduring the reconnection period. In yet another embodiment, the user isnotified that the connecting was lost.

FIG. 14 illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram displaying elements of theactive data platform 210, as shown in FIG. 2B. As previously described,active data cache 256 is the core repository for the active dataplatform. Active data cache 256 provides datasets 1434 and viewsets 1432to active report server 274, which are in turn, are forwarded to activestudio 291. Active report server 274 can convert the received data intoa format suitable for rendering on active studio 291, such as DHTML.Datasets 1434, used to produce data streams, are dynamic de-normalizedrepresentations of information in active data cache 256. Viewsets 1432,used to product reports, are static de-normalized representations ofinformation in active data cache 256. They commonly comprise an initialsnapshot of a recordset in combination with periodic active dataupdates. Each of these, in turn, is forwarded from active report server274 to active studio 291, through connection 1414. In one embodiment,this connection is wired (i.e., Ethernet). In another embodiment, thisconnection is unwired (i.e., 802.11b). In an effort to further optimizeactive data cache 256 performance, viewsets can be stored in reportcache 1404, which is coupled between active data cache 256 and activereport server 274. If the connection is lost, between active studio 291and active report server 274, the last received copy of the data isretransmitted.

Active studio 291 is further comprised of communications browser windowcoupled to a rendering browser window, wherein the communicationsbrowser window maintains the connection, and the rendering browserwindow renders the received data stream. In one embodiment of thepresent invention, a first rendering browser window establishes theconnection by rendering an initial web page. The rendering browserwindow, in turn, instantiates a second communications browser window toreceive and then forward updates to the rendering browser window.However, unlike in a common web page, the communications browser windowmaintains an open connection, never fully receiving the web page fromthe web server (e.g. since periodic active data updates are beingreceived). Should the connection be interrupted (generating a JScriptonload event), the communications browser may automatically attempt toreestablish the connection, and reload the web page again.

FIG. 15A illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram showing a sequencetransactions for maintaining application execution over an intermittentnetwork connection. For instance, an active studio application receivinga data stream on a tablet PC with a wireless connection. 101511 Thefunctional components shown in FIG. 15A are presented horizontally forthe purposes of illustration (i.e., active studio 291, active reportsserver 274, report cache 1404, and active data cache 256). Once theconnection has been initialized, active studio 291 requests a segment ofdata, or a chunk, from active reports server 274 at step 1504(GetChangeList (Viewset ID, chunk_index=0)). Since in this example, itis the initial chunk, the chunk_index number is 0. Active reports server274, in turn, forwards the request at step 1506 to report cache 1404.Report cache 1404 then determines if it contains the requested segmentof data at step 1508 (Check if cache (0)). Since it is the firstrequest, the segment is not available. Report cache 1404, in turn,forwards the request at step 1510 to active data cache 256. Active datacache 256 generates the chunk and forwards it back to report cache 1404at step 1512 (Active Data XML Chunk (0)). Report cache 1404 forwards thechunk to active reports server 274 at step 1516, as well as maintaininga local cached copy at step 1514 (Persist (0)). Active Reports server274, in turn, forwards the chunk to active studio 291 at step 1518.

The process would again be repeated for the next chunk of data. That is,active studio 291 requests the next segment of data, or a chunk, fromactive reports server 274 at step 1520 (GetChangeList (Viewset ID,chunk_index=1)). Active reports server 274, in turn, forwards therequest at step 1522 to report cache 1404. Report cache 1404 thendetermines if it contains the requested chunk of data at step 1524(Check if cache (1)). Chunk 1 is not available in the cache, since it isthe first time that the chunk has been requested. Report cache 1404, inturn, forwards the request at step 1526 to active data cache 256. Activedata cache 256 generates the chunk and forwards it back to report cache1404 at step 1528 (Active Data XML Chunk (1)). Report cache 1404forwards the chunk to active reports server 274 at step 1530, as well asmaintaining a local cached copy at step 1529 (Persist (1)). ActiveReports server 274, in turn, forwards the chunk to active studio 291 atstep 1532. The process would again be repeated for the next chunk ofdata.

FIG. 15B illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram showing a sequencetransactions in which a connection is reestablished in intermittentnetwork connection. As in FIG. 15A, the components are presentedhorizontally for the purposes of illustration (i.e., active studio 291,active reports server 274, report cache 1404, and active data cache256). Once the connection has been initialized, active studio 291requests a segment of data, or a chunk, from active reports server 274at step 1504 (GetChangeList (Viewset ID, chunk_index=0)). Since in thisexample, it is the initial chunk, the chunk_index number is 0. Activereports server 274, In turn, forwards the request at step 1506 to reportcache 1404. Report cache 1404 then determines if it contains therequested segment of data at step 1508 (Check if cache (0)). Since it isthe first request, the segment is not available. Report cache 1404, inturn, forwards the request at step 1510 to active data cache 256. Activedata cache 256 generates the chunk and forwards it back to report cache1404 at step 1512 (Active Data XML Chunk (0)). Report cache 1404forwards the chunk to active reports server 274 at step 1516, as well asmaintaining a local cached copy at step 1514 (Persist (0)). ActiveReports server 274, in turn, forwards the chunk to active studio 291 atstep 1518.

At this point, however, the connection is interrupted and subsequentlyreestablished at step 1519. The last chunk that was received is onceagain requested at step 1540, (GetChangeList (Viewset ID,chunk_index=0)). Active reports server 274, in turn, forwards therequest at step 1542 to report cache 1404. Report cache 1404 thendetermines if it contains the requested segment of data at step 1544(Check if cache (0)). In this instance, since the chunk had previouslybeen requested, a copy has been cached. Report cache 1404, in turn,resends the chunk to active reports server 274 at step 1546. ActiveReports server 274, in turn, forwards the chunk to active studio 291 atstep 1548, passively completing the request.

FIG. 15C illustrates, in accordance with one embodiment of the presentinvention, a simplified functional diagram showing a sequencetransactions in which a chunk in report cache 1404 is cleared. As activedata XML chunks (1560-1568) are requested and subsequently forwarded toactive studio 291, they are also stored at report cache 1404. After afixed number of these active data XML chunks have been accumulated,earlier ones are discarded (since they may no longer be relevant). Forexample, after active data XML chunk (4) is received, active data XMLchunk (0) is discarded at release changelist (0) 1570.

In another aspect of the current invention, a browser can natively printa report in a substantially WSYIWIG format. The pervasiveness of browsertechnology has simplified the deployment enterprise softwareapplications. Instead of mandating the installation of proprietaryclients, which often can be costly to implement and frustrating to use,users can access the same enterprise applications through commonInternet browsers, such as Netscape Navigator or Microsoft InternetExplorer. And in the case of Explorer, the browser is further integratedinto the underlying operating system, requiring no additionalinstallation.

Web page functionality was further enhanced with the introduction ofembedded scripting languages, such as Microsoft JScript and NetscapeJavascript. These scripting language instructions, embedded in the HTMLpage, can be subsequently interpreted and executed on the clientbrowser, producing results that the user sees (i.e., drop down boxes,enhanced menus, popup windows, etc.).

Traditionally, web pages were designed to be viewed on many differentplatforms, from text-only terminals, to Macintoshes, to handheldcomputers. Since there was no way to know how the web page would bedisplayed (i.e., availability of fonts, ability to render images, etc.)the browser was designed to optimize the web page structure into aformat that its host computer is equipped to display. In practice, itwas therefore entirely possible for the web page to render differentlyon the screen of its reader than it did on the screen of its author.Furthermore, since the browser was primarily concerned with renderingthe web page, and not in printing it, browser printed output was oftenproblematic. For simple or small web pages, this was not necessarily aproblem, since the entire rendered web page could be printed on a singleprinted page. However, the columnar or tabular reports generated byenterprise applications often would often span multiple printed pages.

Unlike modem word-processors, such as Microsoft Word, browsers do notgenerally print WYSIWYG (“What You See Is What You Get”). That is, webpages may be rendered without respect to the selected printer. Printinga web page generally causes the appropriate printer driver to map therendered web page display to each printed page. However, the appearanceof the printed page is generally dependent on client configuration(i.e., screen resolution, margin settings, paper size, paperorientation, type of printer, etc.). Since the web page was notoriginally rendered with the printer limitations in mind, as would bethe case with a word processor, portions of the web page may beunexpectedly chopped off.

Furthermore, since printer drivers generally understand only thedisplayed screen pixels and not data objects, such as text or figures,portions of the rendered web page will either be lost (if they exceedthe page's printable width), or printed on the following page (if theyexceed the page's printable length). The result is text or figures thatare split across a printed page boundary. And, unlike a word processor,navigation bars and sidebars will be printed as well. Any page breaksand frame boundaries, created by the web page designer, will also causethe print driver to forward subsequent pixels to the following page.

A possible solution is to copy the rendered data into a WYSIWYGapplication, like Microsoft Word, and then print. Simply copying,however, is problematic since it can be both time-consuming anderror-prone. In the process of pasting data from the browser into theapplication, original formatting may be lost. And although text inparagraph form will simply wrap, remaining readable, tables and columnsmay transfer misaligned, causing information from one column or cell toappear to be in another. Careful error checking may therefore berequired to insure data integrity. For particularly large reports, thismay require several hours of work, creating a printing disincentive, andhence reducing the effectiveness of the enterprise application as awhole.

Another possible solution is for the web server to generate the web-pagein a proprietary WYSIWYG format, such as in Microsoft Word or AdobeAcrobat. This, too, can be problematic since it requires theinstallation of a third party application which may further increasecost and complexity, or may not be available for a given client device.The browser, in essence, again becomes a proprietary client.Furthermore, the use of a proprietary format may also produce largedocuments, substantially increasing download latency.

Yet a third solution may be for the web server to provide a link for aseparate printer friendly web page. Such a page would leave outnavigation bars and sidebar information. A single web page, however, canbe very large, again increasing download latency. Furthermore, printerfriendly usually refers to the web page's printable width, and not itsprintable length. Since there is generally no way for the web server todiscover the local client's configuration settings, figures and text maystill be split across two printed page boundaries.

A more optimum solution may be to provide functionality that allows thebrowser to natively print active reports in a substantially WSYIWIGformat. The active data architecture comprises two general types ofreports: continuous columnar and tiled. Continuous columnar reports arecomparable to common accounting spreadsheets in that they usually havecolumn and report titles, as well as aggregate cells (i.e., subtotals,sums, etc.). These reports generally summarize or analyze some aspect ofthe underlying data, and are generally intended to be printed out intotal. Tiled reports, by comparison, are more comparable to MicrosoftPowerPoint slides. They can simultaneously comprise both lists (i.e., asequential list of text and numbers without aggregates) and graphicaldisplay objects (i.e., charts, graphs, office web components, etc.).Furthermore, the tiled reports are optimized to allow the user to selectand print just the relevant portion of the list.

Referring now to FIGS. 16A-B, the of the active studio screen display ofFIG. 7A is shown, in which continuous columnar report 1618 is shown inbrowser in display pane 715, according to one embodiment of theinvention. FIG. 16A shows a simplified example of the generic schematicof continuous columnar report 1618, whereas FIG. 16B shows a simplifiedexample of the rendered continuous columnar report.

Since transferring large web pages can be slow, the current inventiontransmits the continuous columnar report to the client browser in aseries of smaller frames, each optimized to reduce latency. These framesare then rendered in separate independent browser windows, which arecontiguously positioned without frame borders, to give the impression ofa single large web page. The first frame, slightly larger than thedisplay window, would generally render relatively quickly, creating theperception that the entire web page has arrived (since the hourglass isno longer visible), although subsequent frames may still be rendering.However, once the user manually scrolls down from the first frame,subsequent frames should have substantially rendered.

In this example, two frames are displayed, a first frame 1612 and asecond frame 1616. The first frame 1612 has thirty lines (F1-L1 toF1-L30), while the second frame 1616 also has thirty lines, althoughonly two lines (beginning at F2-L1) are displayed for purposes ofillustration. The each line is further comprised of cells which mayfurther include display elements (i.e., active data elements, aggregateelements, report titles, header text, footer text, etc.) contiguouslyarranged. Since the first frame 1612 is larger than display pane 1606,both vertically and horizontally, a user would subsequently need to usethe scroll bars to see the hidden portions of the frame.

Active reports, unlike normally rendered web pages, can further bemanipulated and customized by the users when in edit or print previewmode. For instance, columns can be re-sized (both width and height),re-positioned (swapping one column with another), and re-formatted (fonttype, font size, line borders, background color, etc). Function pane 714further displays several functional list boxes within home 705 tab, suchas actions list box 1609 which further comprises a print function 1611(which allows the user to print the rendered report) and a printboundaries function 1610.

In traditional browser printing, printer output can be previewed byusing the browser's print preview function. This function takes computerand printer configuration information (i.e., such as page size,orientation, margins, etc.), calculates the total amount of screenpixels that can fit on a printed page, and renders a static picture ofthat page in a new print preview window. As previous discussed, portionsof the web page beyond the print boundaries will be chopped off. Anyportion of the web page exceeding the printed page width will becompletely lost, while any portion exceeding the printed height will beprinted on the next page, potentially splitting text and figures betweentwo contiguous pages. Furthermore, since the print preview window isessentially a static snapshot, the user is generally unable tomanipulate elements on the page to fit within the displayed printboundaries.

In a non-obvious fashion, print boundaries function 1610 superimposes aset of non-printable guides 1608 identifying the printable areas of thecolumnar report, as rendered in display pane 715. Vertical rowpositioning can be further optimized to insuring that a page break doesnot occur in the middle of a row. Furthermore, unlike the traditionalstatic print preview window, the user can manipulate the rendered reportto fit within the displayed guides, allowing the active report to beprinted in a substantially WYSIWYG manner. That is, users can bothre-sized and re-positioned columns, as well as re-formatted font typesand sizes.

FIG. 16C is a flow chart showing steps for rendering the printboundaries on the active report. Initially, the user selects the printboundaries function 1610, as shown in FIG. 16A, where upon clientconfiguration settings are converted to print boundary dimensions atstep 1640. That is, configuration information (i.e., page size, pageorientation, margins, screen resolution, etc.) is used to calculate aprintable area template in screen pixels, with page breaks automaticallybeing generated by the browser between successive frames. The browserthen requests the active reports engine to transmit the first frame atstep 1642. As previously described, frames comprise a set of rows,further including the active data elements. The area of the receivedframe is then compared the printable area, wherein the last row N of theframe that fits inside the printable area is determined at step 1646.Should there exist at least one additional row at step 1647, it issubsequently thrown away at step 1648. The next frame is then retrievedfrom the active reports engine, starting with row N+1, at step 1650, andstep 1646 is repeated again. If there are no additional rows, the useris notified that all rows have been loaded at step 1654. In oneembodiment, a message appears on the user display stating that morepages are being loaded. Once step 1654 completes, the message isremoved. In another embodiment, as the frames are displayed, a messagecomprising the frame sequence number is placed in the corner of eachframe. Once step 1654 completes, the message also includes a total framenumber.

Referring now to FIGS. 17A, the of the active studio screen display ofFIG. 7A is shown, in which a titled report is being rendered accordingto one embodiment of the invention. In this example, a single list isdisplayed in display pane 715. Like the previously described continuouscolumnar report, as shown in FIGS. 16A-B, user-perceived performance isalso optimized through the transmission of a series of smaller frames.The parent frame, loading first, comprises many key frame elements, andis further responsible for loading subsequent pages. However, unlike thecontinuous columnar report, titled reports do not display printboundaries. Instead, the user selects print preview 1710, which opens amodified print preview window with the previously received frames, asshown in FIGS. 17B-C. FIG. 17B shows a simplified example of the genericschematic of list report 1720, whereas FIG. 17C shows a simplifiedexample of the rendered list report. Lists displayed within the printpreview window allow the user to select a portion to print, in contrastto the columnar report in which the entire report is printed.

Referring to FIG. 17B, two frames are displayed, a first frame 1712 anda second frame 1716. The first frame 1712 has thirty lines (F1-L1 toF1-L30), while the second frame 1716 also has thirty lines (F1-L1 toF1-L30). The each line is further comprised of cells contiguouslyarranged in columns, such as active data elements, report titles. Theprintable area 1708 is automatically determined based on clientconfiguration, as previously described. The user can scroll up or downto find the relevant portion to print. In a non-obvious fashion, unlikea traditional browser's print preview function, lists within the titledreport can be further manipulated and customized by the users in edit orprint preview mode. For instance, columns can be re-sized (both widthand height), re-positioned (swapping one column with another), andre-formatted (font type, font size, line borders, background color,etc). Furthermore, unlike the columnar report, the titled reportattempts to fit the entire report within the print boundaries. Once theuser selects the appropriate information, the titled report can beprinted by selecting print button. 1742.

FIG. 17D is a flow chart showing steps for printing the section of thelist within the print boundaries. Initial, the user selects the printbutton 1742, as shown in FIG. 17C, whereupon the frame number and therow number of the first visible row (FVR) and last visible row (LVR) aredetermined in steps 1760-1762. That is, the first row and last row thatare displayed in the print preview window. Vertical scroll bar 1710allows the user to select new segments of the list.

Depending on the set of rows selected, there are four possiblesituations that must be addressed. The first test determines if the FVRand the LVR are both within the parent frame at step 1764. If so, therows above the FVR and below the LVR in the parent frame are hidden, atstep 1772. If not, a second test determines if the FVR is in the parentframe and the LVR is in a child frame, step 1766. If so, the rows abovethe FVR in the parent frame, and the rows below the LVR in the childframe, are hidden at step 1774. If not, a third test determines if theFVR and the LVR are in the same child frame at step 1768. If so, therows above the FVR and below the LVR are hidden in the child frame atstep 1776. If not, a final test determines if the FVR is in a firstchild frame and the LVR is in a second child frame, at step 1770. If so,the rows above the FVR in the first child frame, and the rows below theLVR in the second child frame, are hidden at step 1778. At this stage,the remaining frames are hidden, at step 1780. Since the remainingvisible rows fit within the printed page, the vertical scroll bar alsodisappears. The titled report is forwarded to the printer, at step 1780.At this point, all rows that were previously hidden are made visible,returning the vertical scroll bar, at step 1782.

Referring now to FIGS. 18A-B, the of the active studio screen display ofFIG. 7A is shown, in which another titled report is being renderedaccording to one embodiment of the invention. In this example, thetitled report is a composite of multiple elements: a set of lists 1707,as displayed in FIG. 17, and a set of graphical display objects 1802. Asdescribed previously, users can manipulate and customize the lists byre-sizing, re-positioning, and re-formatting columns. Graphical displayobjects 1802 can also be further customized by changing chart type, fillcolor, and font size and style. In general, graphical display objects1802 are automatically resized to fit on the printed page.

Referring now to FIG. 19, the active studio screen display of FIG. 7A isshown, further showing the personalize tab 19O8. Here, the userconfigures printer information, such as orientation 1904 and paper size1906. This is in addition to the regular browser printer configurationinformation, since browser scripting languages (i.e., JScript,Javascript, etc.) generally cannot access this information directly.

While this invention has been described in terms of several preferredembodiments, there are alterations, permutations, and equivalents whichfall within the scope of this invention. For example, although referenceis given to Sagent Business Intelligence Solutions, it should beunderstood that the invention can also integrate with other businessintelligence and ETL solutions. It should also be noted that there aremany alternative ways of implementing the apparatuses of the presentinvention. It is therefore intended that the following appended claimsbe interpreted as including all such alterations, permutations, andequivalents as fall within the true spirit and scope of the presentinvention.

Advantages of the invention include optimizing the presence-awaredelivery of relevant information a device in a timely manner, andrendered in a dynamic format. Additional advantages include thecontinuous extraction of information from data sources without the needfor manual queries, or the need of additional user training.

Having disclosed exemplary embodiments and the best mode, modificationsand variations may be made to the disclosed embodiments while remainingwithin the subject and spirit of the invention as defined by thefollowing claims.

1. A method of creating a printable representation of data elements of awebpage displayed in a web browser, the webpage comprising a set offrames, each frame comprising a subset of data elements including a setof frames, the method comprising: determining print boundary dimensionswhich identify a printable area of the web page in screen pixels theprint boundary dimensions comprising an optimal height distance X;retrieving from a data source a first frame of the set of frames, thefirst frame including a first set of data rows, from a row 1 to a row N,wherein each row further comprises a set of data elements; determining asubset of data rows of the first set of data rows of the first framethat fits inside the print boundary dimensions, wherein determining thesubset of data rows comprises: determining a row height for each row ofsaid first set of data rows, based in part, on a set of device displayconfiguration indicia; and determining a row M from said first set ofdata rows, wherein a summation of said row heights of said row 1 to saidrow M is smaller than X, and a summation of said row heights of said row1 to a row M+1 is larger than X; discarding from said row M+1 to saidrow N of the first set of data rows that do not fit inside the printboundary dimensions; rendering at least one row of said row 1 to saidrow M on the web browser as the printable representation the at leastone row of said row 1 to said row M is identified as fitting within theprint boundary dimensions; rendering at least one row of said row M+1 tosaid row N on the web browser the at least one row of said row M+1 tosaid row N is displayed as being outside of the print boundarydimensions; and if necessary retrieving a second set of data rowsbeginning with said row M+1.
 2. (canceled)
 3. The method of claim 1,wherein a printing guide is displayed on a boundary defined by saidprintable area.
 4. The method of claim 1, wherein a frame number isdisplayed in said printable area.
 5. The method of claim 1, wherein auser can change a spatial position of a data element of said set of dataelements within said browser.
 6. The method of claim 1, wherein a usercan change a format of a data element of said set of data elementswithin said browser.
 7. A method of creating a printable representationof a set of data elements of a webpage displayed in a web browser, thewebpage comprising a set of frames, each frame comprising a subset ofdata elements, the method comprising: retrieving the set of frames ofthe web page from a data source the set of frames including a set ofdata rows, from a row 1 to a row N; determining print boundarydimensions which identify a printable area of the web page in screenpixels the print boundary dimensions comprising an optimal height and anoptimal width; determining a first subset of data rows of the set ofdata rows of the set of frames that fits inside the print boundarydimensions by determining a row height for each row of said data rows,based in part, on a set of device display configuration indicia;rendering in said web browser, said set of data rows in a first frame ofthe set of frames based on the print boundary dimensions, wherein thefirst subset of said set of data rows is viewable in the web browser,and a second subset of said set of data rows and a third subset of saidset of data rows are not viewable in the web browser; receiving auser-provided selection of a fourth subset of said set of data rowscomprising data rows from said first subset and said second subset andsaid third subset, where row 1 is a first viewable row and row K is alast viewable row, wherein the first viewable row and the last viewablerow fit inside the print boundary dimensions; hiding a fifth subset ofsaid set of data rows from said row 1 to a row I-1, and hiding a sixthsubset of said set of data rows from a row K+1 to said row N, whereinthe fifth subset and sixth subset do not fit inside the print boundarydimensions; printing said row 1 to said row K of the selected fourthsubset of the set of data rows; showing previously hidden said fifthsubset and said sixth subset.
 8. The method of claim 7, wherein a usercan change a spatial position of a data element of said set of dataelements, within said browser.
 9. The method of claim 7, wherein a usercan change a format of a data element of said set of data elements,within said browser.
 10. The method of claim 7, wherein said browserfurther comprises a second frame including a graphical display object.11. The method of claim 10, wherein said graphical display objectfurther comprises a pie graph.
 12. The method of claim 10, wherein saidgraphical display object further comprises a line graph.
 13. The methodof claim 10, wherein said graphical display object further comprises ascatter graph.
 14. The method of claim 10, wherein said graphicaldisplay object further comprises a gauge graph.
 15. The method of claim10, wherein said graphical display object further comprises an officeweb component.
 16. An apparatus for creating a printable representationof data elements of a webpage displayed in a web browser, the webpagecomprising a set of frames, each frame comprising a subset of dataelements, the method comprising: a means of determining print boundarydimensions which identify a printable area of the web page in screenpixels, the print boundary dimensions comprising an optimal heightdistance X; a means of retrieving from a data source a first frame ofthe set of frames, the first frame including a first set of data rows,from a row 1 to a row N, wherein each row further comprises a set ofdata elements; means of determining a subset of data rows of the firstset of data rows of the first frame that fits inside the print boundarydimensions, wherein determining the subset of data rows comprises: ameans of determining a row height for each row of said first set of datarows, based in part, on a set of device display configuration indicia;and a means of determining a row M from said first set of data rows,wherein a summation of said row heights of said row 1 to said row M issmaller than X, and a summation of said row heights of said row 1 to arow M+1 is larger than X; a means of discarding from said row M +1 tosaid row N of the first set of data rows that do not fit inside theprint boundary dimensions; a means of rendering at least one row of saidrow 1 to said row M on the web browser as the printable representationthe at least one row of said row 1 to said row M is identified asfitting within the print boundary dimensions; a means of rendering atleast one row of said row M+1 to said row N on the web browser the atleast one row of said row M+1 to said row N is displayed as beingoutside of the print boundary dimensions; and a means of retrieving asecond set of data rows beginning with said row M+1 if necessary 17.(canceled)
 18. The apparatus of claim 16, wherein a printing guide isdisplayed on a boundary defined by said printable area.
 19. Theapparatus of claim 16, wherein a frame number is displayed in saidprintable area.
 20. The apparatus of claim 16, wherein a user can changea spatial position of a data element of said set of data elements withinsaid browser.
 21. The apparatus of claim 16, wherein a user can change aformat of a data element of said set of data elements within saidbrowser.
 22. An apparatus for creating a printable representation of aset of data elements of a webpage displayed in a web browser, thewebpage comprising a set of frames, each frame comprising a subset ofdata elements, the method comprising: a means of retrieving the set offrames of the web page from a data source, the set of frames including aset of data rows, from a row 1 to a row N; means of determining printboundary dimensions, which identify a printable area of the web page inscreen pixels, the print boundary dimensions comprising an optimalheight and an optimal width; a means of determining a first subset ofdata rows of the set of data rows of the set of frames that fits insidethe print boundary dimensions by determining a row height for each rowof said data rows, based in part, on a set of device displayconfiguration indicia; a means of rendering, in said web browser, saidset of data rows in a first frame of the set of frames based on theprint boundary dimensions, wherein the first subset of said set of datarows is viewable in the web browser, and a second subset of said set ofdata rows and a third subset of said set of data rows are not viewablein the web browser; a means of receiving a user-provided selection of afourth subset of said set of data rows comprising data rows from saidfirst subset and said second subset and said third subset, where row Iis a first viewable row and row K is a last viewable row, wherein thefirst viewable row and the last viewable row fit inside the printboundary dimensions; a means of hiding a fifth subset of said set ofdata rows from said row 1 to a row I-1, and hiding a sixth subset ofsaid set of data rows from a row K+1 to said row N, wherein the fifthsubset and sixth subset do not fit inside the print boundary dimensions;a means of printing said row I to said row K of the selected fourthsubset of the set of data rows; a means of showing previously hiddensaid fifth subset and said sixth subset.
 23. The apparatus of claim 22,wherein a user can change a spatial position of a data element of saidset of data elements, within said browser.
 24. The apparatus of claim22, wherein a user can change a format of a data element of said set ofdata elements, within said browser.
 25. The apparatus of claim 22,wherein said browser further comprises a second frame including agraphical display object.
 26. The apparatus of claim 25, wherein saidgraphical display object further comprises a pie graph.
 27. Theapparatus of claim 25, wherein said graphical display object furthercomprises a line graph.
 28. The apparatus of claim 25, wherein saidgraphical display object further comprises a scatter graph.
 29. Theapparatus of claim 25, wherein said graphical display object furthercomprises a gauge graph.
 30. The apparatus of claim 25, wherein saidgraphical display object further comprises an office web component.